<!DOCTYPE html>
<html lang="en" dir="ltr">
  <head>
    <meta charset="utf-8" />
    <title>dependency graph</title>
    <style>
      .node:active path,
      .node:hover path,
      .node.current path,
      .node:active polygon,
      .node:hover polygon,
      .node.current polygon
       {
        stroke: fuchsia;
        stroke-width: 2;
      }
      .edge:active path,
      .edge:hover path,
      .edge.current path,
      .edge:active ellipse,
      .edge:hover ellipse,
      .edge.current ellipse {
        stroke: fuchsia;
        stroke-width: 3;
        stroke-opacity: 1;
      }
      .edge:active polygon,
      .edge:hover polygon,
      .edge.current polygon {
        stroke: fuchsia;
        stroke-width: 3;
        fill: fuchsia;
        stroke-opacity: 1;
        fill-opacity: 1;
      }
      .edge:active text,
      .edge:hover text {
        fill: fuchsia;
      }
      .cluster path {
        stroke-width: 3;
      }
      .cluster:active path,
      .cluster:hover path {
        fill: #ffff0011;
      }
    </style>
  </head>
  <body>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
 "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 2.47.1 (20210417.1919)
 -->
<!-- Title: dependency&#45;cruiser output Pages: 1 -->
<svg width="807pt" height="701pt"
 viewBox="0.00 0.00 806.85 701.21" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 697.21)">
<title>dependency&#45;cruiser output</title>
<polygon fill="white" stroke="transparent" points="-4,4 -4,-697.21 802.85,-697.21 802.85,4 -4,4"/>
<!-- bin/smcat -->
<g id="node1" class="node">
<title>bin/smcat</title>
<g id="a_node1"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/develop/bin/smcat" xlink:title="bin/&lt;BR/&gt;&lt;B&gt;smcat&lt;/B&gt;">
<path fill="#ffffcc" stroke="black" d="M344.96,-259.68C344.96,-259.68 308.3,-259.68 308.3,-259.68 303.96,-259.68 299.63,-255.35 299.63,-251.02 299.63,-251.02 299.63,-242.35 299.63,-242.35 299.63,-238.02 303.96,-233.68 308.3,-233.68 308.3,-233.68 344.96,-233.68 344.96,-233.68 349.3,-233.68 353.63,-238.02 353.63,-242.35 353.63,-242.35 353.63,-251.02 353.63,-251.02 353.63,-255.35 349.3,-259.68 344.96,-259.68"/>
<text text-anchor="start" x="318.63" y="-249.48" font-family="Helvetica,sans-Serif" font-size="9.00">bin/</text>
<text text-anchor="start" x="312.63" y="-240.48" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="9.00">smcat</text>
</a>
</g>
</g>
<!-- package.json -->
<g id="node2" class="node">
<title>package.json</title>
<g id="a_node2"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/develop/package.json" xlink:title="./&lt;BR/&gt;&lt;B&gt;package.json&lt;/B&gt;">
<path fill="#ffee44" stroke="black" d="M265.83,-228.35C265.83,-230.13 249.24,-231.58 228.83,-231.58 208.41,-231.58 191.83,-230.13 191.83,-228.35 191.83,-228.35 191.83,-199.3 191.83,-199.3 191.83,-197.52 208.41,-196.07 228.83,-196.07 249.24,-196.07 265.83,-197.52 265.83,-199.3 265.83,-199.3 265.83,-228.35 265.83,-228.35"/>
<path fill="none" stroke="black" d="M265.83,-228.35C265.83,-226.57 249.24,-225.12 228.83,-225.12 208.41,-225.12 191.83,-226.57 191.83,-228.35"/>
<text text-anchor="start" x="226.33" y="-216.63" font-family="Helvetica,sans-Serif" font-size="9.00">./</text>
<text text-anchor="start" x="199.83" y="-207.63" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="9.00">package.json</text>
</a>
</g>
</g>
<!-- bin/smcat&#45;&gt;package.json -->
<g id="edge1" class="edge">
<title>bin/smcat&#45;&gt;package.json</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M308.21,-233.59C308.21,-222.36 308.21,-208 308.21,-208 308.21,-208 272.19,-208 272.19,-208"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="272.19,-205.9 266.19,-208 272.19,-210.1 272.19,-205.9"/>
</g>
<!-- src/cli/actions.js -->
<g id="node3" class="node">
<title>src/cli/actions.js</title>
<g id="a_node3"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/develop/src/cli/actions.js" xlink:title="src/cli/&lt;BR/&gt;&lt;B&gt;actions.js&lt;/B&gt;">
<path fill="#ccffcc" stroke="black" d="M316.71,-187.94C316.71,-187.94 276.04,-187.94 276.04,-187.94 271.71,-187.94 267.38,-183.61 267.38,-179.28 267.38,-179.28 267.38,-170.61 267.38,-170.61 267.38,-166.28 271.71,-161.94 276.04,-161.94 276.04,-161.94 316.71,-161.94 316.71,-161.94 321.04,-161.94 325.38,-166.28 325.38,-170.61 325.38,-170.61 325.38,-179.28 325.38,-179.28 325.38,-183.61 321.04,-187.94 316.71,-187.94"/>
<text text-anchor="start" x="283.38" y="-177.74" font-family="Helvetica,sans-Serif" font-size="9.00">src/cli/</text>
<text text-anchor="start" x="275.38" y="-168.74" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="9.00">actions.js</text>
</a>
</g>
</g>
<!-- bin/smcat&#45;&gt;src/cli/actions.js -->
<g id="edge2" class="edge">
<title>bin/smcat&#45;&gt;src/cli/actions.js</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M316.79,-233.52C316.79,-233.52 316.79,-194.02 316.79,-194.02"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="318.89,-194.02 316.79,-188.02 314.69,-194.02 318.89,-194.02"/>
</g>
<!-- src/cli/make&#45;description.js -->
<g id="node4" class="node">
<title>src/cli/make&#45;description.js</title>
<g id="a_node4"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/develop/src/cli/make-description.js" xlink:title="src/cli/&lt;BR/&gt;&lt;B&gt;make&#45;description.js&lt;/B&gt;">
<path fill="#ccffcc" stroke="black" d="M425.77,-164.6C425.77,-164.6 342.1,-164.6 342.1,-164.6 337.77,-164.6 333.44,-160.26 333.44,-155.93 333.44,-155.93 333.44,-147.26 333.44,-147.26 333.44,-142.93 337.77,-138.6 342.1,-138.6 342.1,-138.6 425.77,-138.6 425.77,-138.6 430.1,-138.6 434.44,-142.93 434.44,-147.26 434.44,-147.26 434.44,-155.93 434.44,-155.93 434.44,-160.26 430.1,-164.6 425.77,-164.6"/>
<text text-anchor="start" x="370.94" y="-154.4" font-family="Helvetica,sans-Serif" font-size="9.00">src/cli/</text>
<text text-anchor="start" x="341.44" y="-145.4" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="9.00">make&#45;description.js</text>
</a>
</g>
</g>
<!-- bin/smcat&#45;&gt;src/cli/make&#45;description.js -->
<g id="edge3" class="edge">
<title>bin/smcat&#45;&gt;src/cli/make&#45;description.js</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M343.53,-233.46C343.53,-233.46 343.53,-170.71 343.53,-170.71"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="345.63,-170.71 343.53,-164.71 341.43,-170.71 345.63,-170.71"/>
</g>
<!-- src/cli/normalize.js -->
<g id="node5" class="node">
<title>src/cli/normalize.js</title>
<g id="a_node5"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/develop/src/cli/normalize.js" xlink:title="src/cli/&lt;BR/&gt;&lt;B&gt;normalize.js&lt;/B&gt;">
<path fill="#ccffcc" stroke="black" d="M352.34,-449.83C352.34,-449.83 301.67,-449.83 301.67,-449.83 297.34,-449.83 293.01,-445.5 293.01,-441.17 293.01,-441.17 293.01,-432.5 293.01,-432.5 293.01,-428.17 297.34,-423.83 301.67,-423.83 301.67,-423.83 352.34,-423.83 352.34,-423.83 356.67,-423.83 361.01,-428.17 361.01,-432.5 361.01,-432.5 361.01,-441.17 361.01,-441.17 361.01,-445.5 356.67,-449.83 352.34,-449.83"/>
<text text-anchor="start" x="314.01" y="-439.63" font-family="Helvetica,sans-Serif" font-size="9.00">src/cli/</text>
<text text-anchor="start" x="301.01" y="-430.63" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="9.00">normalize.js</text>
</a>
</g>
</g>
<!-- bin/smcat&#45;&gt;src/cli/normalize.js -->
<g id="edge4" class="edge">
<title>bin/smcat&#45;&gt;src/cli/normalize.js</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M316.16,-259.75C316.16,-259.75 316.16,-417.67 316.16,-417.67"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="314.06,-417.67 316.16,-423.67 318.26,-417.67 314.06,-417.67"/>
</g>
<!-- src/cli/validations.js -->
<g id="node6" class="node">
<title>src/cli/validations.js</title>
<g id="a_node6"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/develop/src/cli/validations.js" xlink:title="src/cli/&lt;BR/&gt;&lt;B&gt;validations.js&lt;/B&gt;">
<path fill="#ccffcc" stroke="black" d="M462.11,-344.53C462.11,-344.53 406.45,-344.53 406.45,-344.53 402.11,-344.53 397.78,-340.19 397.78,-335.86 397.78,-335.86 397.78,-327.19 397.78,-327.19 397.78,-322.86 402.11,-318.53 406.45,-318.53 406.45,-318.53 462.11,-318.53 462.11,-318.53 466.45,-318.53 470.78,-322.86 470.78,-327.19 470.78,-327.19 470.78,-335.86 470.78,-335.86 470.78,-340.19 466.45,-344.53 462.11,-344.53"/>
<text text-anchor="start" x="421.28" y="-334.33" font-family="Helvetica,sans-Serif" font-size="9.00">src/cli/</text>
<text text-anchor="start" x="405.78" y="-325.33" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="9.00">validations.js</text>
</a>
</g>
</g>
<!-- bin/smcat&#45;&gt;src/cli/validations.js -->
<g id="edge5" class="edge">
<title>bin/smcat&#45;&gt;src/cli/validations.js</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M353.96,-254C380.28,-254 416.11,-254 416.11,-254 416.11,-254 416.11,-312.38 416.11,-312.38"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="414.01,-312.38 416.11,-318.38 418.21,-312.38 414.01,-312.38"/>
</g>
<!-- src/index&#45;node.js -->
<g id="node7" class="node">
<title>src/index&#45;node.js</title>
<g id="a_node7"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/develop/src/index-node.js" xlink:title="src/&lt;BR/&gt;&lt;B&gt;index&#45;node.js&lt;/B&gt;">
<path fill="#ffffcc" stroke="black" d="M514.33,-292.67C514.33,-292.67 457.67,-292.67 457.67,-292.67 453.33,-292.67 449,-288.33 449,-284 449,-284 449,-275.33 449,-275.33 449,-271 453.33,-266.67 457.67,-266.67 457.67,-266.67 514.33,-266.67 514.33,-266.67 518.67,-266.67 523,-271 523,-275.33 523,-275.33 523,-284 523,-284 523,-288.33 518.67,-292.67 514.33,-292.67"/>
<text text-anchor="start" x="478.5" y="-282.47" font-family="Helvetica,sans-Serif" font-size="9.00">src/</text>
<text text-anchor="start" x="457" y="-273.47" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="9.00">index&#45;node.js</text>
</a>
</g>
</g>
<!-- src/cli/actions.js&#45;&gt;src/index&#45;node.js -->
<g id="edge6" class="edge">
<title>src/cli/actions.js&#45;&gt;src/index&#45;node.js</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M325.46,-180C372.78,-180 461.2,-180 461.2,-180 461.2,-180 461.2,-260.64 461.2,-260.64"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="459.1,-260.64 461.2,-266.64 463.3,-260.64 459.1,-260.64"/>
</g>
<!-- src/cli/file&#45;name&#45;to&#45;stream.js -->
<g id="node8" class="node">
<title>src/cli/file&#45;name&#45;to&#45;stream.js</title>
<g id="a_node8"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/develop/src/cli/file-name-to-stream.js" xlink:title="src/cli/&lt;BR/&gt;&lt;B&gt;file&#45;name&#45;to&#45;stream.js&lt;/B&gt;">
<path fill="#ccffcc" stroke="black" d="M316.55,-121.32C316.55,-121.32 222.89,-121.32 222.89,-121.32 218.55,-121.32 214.22,-116.99 214.22,-112.65 214.22,-112.65 214.22,-103.99 214.22,-103.99 214.22,-99.65 218.55,-95.32 222.89,-95.32 222.89,-95.32 316.55,-95.32 316.55,-95.32 320.89,-95.32 325.22,-99.65 325.22,-103.99 325.22,-103.99 325.22,-112.65 325.22,-112.65 325.22,-116.99 320.89,-121.32 316.55,-121.32"/>
<text text-anchor="start" x="256.72" y="-111.12" font-family="Helvetica,sans-Serif" font-size="9.00">src/cli/</text>
<text text-anchor="start" x="222.22" y="-102.12" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="9.00">file&#45;name&#45;to&#45;stream.js</text>
</a>
</g>
</g>
<!-- src/cli/actions.js&#45;&gt;src/cli/file&#45;name&#45;to&#45;stream.js -->
<g id="edge7" class="edge">
<title>src/cli/actions.js&#45;&gt;src/cli/file&#45;name&#45;to&#45;stream.js</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M296.3,-161.78C296.3,-161.78 296.3,-127.46 296.3,-127.46"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="298.4,-127.46 296.3,-121.46 294.2,-127.46 298.4,-127.46"/>
</g>
<!-- src/cli/attributes&#45;parser.js -->
<g id="node9" class="node">
<title>src/cli/attributes&#45;parser.js</title>
<g id="a_node9"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/develop/src/cli/attributes-parser.js" xlink:title="src/cli/&lt;BR/&gt;&lt;B&gt;attributes&#45;parser.js&lt;/B&gt;">
<polygon fill="#ccffcc" stroke="black" points="430.7,-396.83 332.7,-396.83 332.7,-370.83 430.7,-370.83 430.7,-396.83"/>
<text text-anchor="start" x="368.7" y="-386.63" font-family="Helvetica,sans-Serif" font-size="9.00">src/cli/</text>
<text text-anchor="start" x="340.7" y="-377.63" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="9.00">attributes&#45;parser.js</text>
</a>
</g>
</g>
<!-- src/cli/normalize.js&#45;&gt;src/cli/attributes&#45;parser.js -->
<g id="edge9" class="edge">
<title>src/cli/normalize.js&#45;&gt;src/cli/attributes&#45;parser.js</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M346.85,-423.73C346.85,-423.73 346.85,-403.15 346.85,-403.15"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="348.95,-403.15 346.85,-397.15 344.75,-403.15 348.95,-403.15"/>
</g>
<!-- src/options.js -->
<g id="node10" class="node">
<title>src/options.js</title>
<g id="a_node10"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/develop/src/options.js" xlink:title="src/&lt;BR/&gt;&lt;B&gt;options.js&lt;/B&gt;">
<path fill="#ffffcc" stroke="black" d="M340.48,-533.63C340.48,-533.63 299.81,-533.63 299.81,-533.63 295.48,-533.63 291.14,-529.3 291.14,-524.96 291.14,-524.96 291.14,-516.3 291.14,-516.3 291.14,-511.96 295.48,-507.63 299.81,-507.63 299.81,-507.63 340.48,-507.63 340.48,-507.63 344.81,-507.63 349.14,-511.96 349.14,-516.3 349.14,-516.3 349.14,-524.96 349.14,-524.96 349.14,-529.3 344.81,-533.63 340.48,-533.63"/>
<text text-anchor="start" x="312.64" y="-523.43" font-family="Helvetica,sans-Serif" font-size="9.00">src/</text>
<text text-anchor="start" x="299.14" y="-514.43" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="9.00">options.js</text>
</a>
</g>
</g>
<!-- src/cli/normalize.js&#45;&gt;src/options.js -->
<g id="edge8" class="edge">
<title>src/cli/normalize.js&#45;&gt;src/options.js</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M330.43,-449.93C330.43,-449.93 330.43,-501.63 330.43,-501.63"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="328.33,-501.63 330.43,-507.63 332.53,-501.63 328.33,-501.63"/>
</g>
<!-- src/cli/validations.js&#45;&gt;src/index&#45;node.js -->
<g id="edge10" class="edge">
<title>src/cli/validations.js&#45;&gt;src/index&#45;node.js</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M459.89,-318.44C459.89,-318.44 459.89,-298.93 459.89,-298.93"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="461.99,-298.93 459.89,-292.93 457.79,-298.93 461.99,-298.93"/>
</g>
<!-- src/cli/validations.js&#45;&gt;src/cli/attributes&#45;parser.js -->
<g id="edge11" class="edge">
<title>src/cli/validations.js&#45;&gt;src/cli/attributes&#45;parser.js</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M414.24,-344.72C414.24,-344.72 414.24,-364.81 414.24,-364.81"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="412.14,-364.81 414.24,-370.81 416.34,-364.81 412.14,-364.81"/>
</g>
<!-- src/index&#45;node.js&#45;&gt;package.json -->
<g id="edge12" class="edge">
<title>src/index&#45;node.js&#45;&gt;package.json</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M455.1,-266.66C455.1,-244.79 455.1,-203 455.1,-203 455.1,-203 271.94,-203 271.94,-203"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="271.94,-200.9 265.94,-203 271.94,-205.1 271.94,-200.9"/>
</g>
<!-- src/index&#45;node.js&#45;&gt;src/options.js -->
<g id="edge13" class="edge">
<title>src/index&#45;node.js&#45;&gt;src/options.js</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M488.71,-292.87C488.71,-343.05 488.71,-519 488.71,-519 488.71,-519 355.51,-519 355.51,-519"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="355.51,-516.9 349.51,-519 355.51,-521.1 355.51,-516.9"/>
</g>
<!-- src/parse/index.js -->
<g id="node11" class="node">
<title>src/parse/index.js</title>
<g id="a_node11"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/develop/src/parse/index.js" xlink:title="src/parse/&lt;BR/&gt;&lt;B&gt;index.js&lt;/B&gt;">
<path fill="#ffccff" stroke="black" d="M599.23,-508.72C599.23,-508.72 560.57,-508.72 560.57,-508.72 556.23,-508.72 551.9,-504.39 551.9,-500.05 551.9,-500.05 551.9,-491.39 551.9,-491.39 551.9,-487.05 556.23,-482.72 560.57,-482.72 560.57,-482.72 599.23,-482.72 599.23,-482.72 603.57,-482.72 607.9,-487.05 607.9,-491.39 607.9,-491.39 607.9,-500.05 607.9,-500.05 607.9,-504.39 603.57,-508.72 599.23,-508.72"/>
<text text-anchor="start" x="559.9" y="-498.52" font-family="Helvetica,sans-Serif" font-size="9.00">src/parse/</text>
<text text-anchor="start" x="562.9" y="-489.52" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="9.00">index.js</text>
</a>
</g>
</g>
<!-- src/index&#45;node.js&#45;&gt;src/parse/index.js -->
<g id="edge14" class="edge">
<title>src/index&#45;node.js&#45;&gt;src/parse/index.js</title>
<path fill="none" stroke="#ff00ff" stroke-width="2" stroke-opacity="0.466667" d="M523.07,-280C538.9,-280 553.79,-280 553.79,-280 553.79,-280 553.79,-476.55 553.79,-476.55"/>
<polygon fill="#ff00ff" fill-opacity="0.466667" stroke="#ff00ff" stroke-width="2" stroke-opacity="0.466667" points="551.69,-476.55 553.79,-482.55 555.89,-476.55 551.69,-476.55"/>
</g>
<!-- src/render/index&#45;node.js -->
<g id="node12" class="node">
<title>src/render/index&#45;node.js</title>
<g id="a_node12"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/develop/src/render/index-node.js" xlink:title="src/render/&lt;BR/&gt;&lt;B&gt;index&#45;node.js&lt;/B&gt;">
<path fill="#ccccff" stroke="black" d="M538.74,-223.83C538.74,-223.83 482.07,-223.83 482.07,-223.83 477.74,-223.83 473.4,-219.5 473.4,-215.17 473.4,-215.17 473.4,-206.5 473.4,-206.5 473.4,-202.17 477.74,-197.83 482.07,-197.83 482.07,-197.83 538.74,-197.83 538.74,-197.83 543.07,-197.83 547.4,-202.17 547.4,-206.5 547.4,-206.5 547.4,-215.17 547.4,-215.17 547.4,-219.5 543.07,-223.83 538.74,-223.83"/>
<text text-anchor="start" x="488.4" y="-213.63" font-family="Helvetica,sans-Serif" font-size="9.00">src/render/</text>
<text text-anchor="start" x="481.4" y="-204.63" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="9.00">index&#45;node.js</text>
</a>
</g>
</g>
<!-- src/index&#45;node.js&#45;&gt;src/render/index&#45;node.js -->
<g id="edge15" class="edge">
<title>src/index&#45;node.js&#45;&gt;src/render/index&#45;node.js</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M498.2,-266.39C498.2,-266.39 498.2,-230.06 498.2,-230.06"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="500.3,-230.06 498.2,-224.06 496.1,-230.06 500.3,-230.06"/>
</g>
<!-- src/transform/desugar.js -->
<g id="node13" class="node">
<title>src/transform/desugar.js</title>
<g id="a_node13"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/develop/src/transform/desugar.js" xlink:title="src/transform/&lt;BR/&gt;&lt;B&gt;desugar.js&lt;/B&gt;">
<path fill="#ffffcc" stroke="black" d="M621.8,-370.2C621.8,-370.2 568.13,-370.2 568.13,-370.2 563.8,-370.2 559.47,-365.87 559.47,-361.53 559.47,-361.53 559.47,-352.87 559.47,-352.87 559.47,-348.53 563.8,-344.2 568.13,-344.2 568.13,-344.2 621.8,-344.2 621.8,-344.2 626.13,-344.2 630.47,-348.53 630.47,-352.87 630.47,-352.87 630.47,-361.53 630.47,-361.53 630.47,-365.87 626.13,-370.2 621.8,-370.2"/>
<text text-anchor="start" x="567.47" y="-360" font-family="Helvetica,sans-Serif" font-size="9.00">src/transform/</text>
<text text-anchor="start" x="572.47" y="-351" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="9.00">desugar.js</text>
</a>
</g>
</g>
<!-- src/index&#45;node.js&#45;&gt;src/transform/desugar.js -->
<g id="edge16" class="edge">
<title>src/index&#45;node.js&#45;&gt;src/transform/desugar.js</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M519.3,-292.97C519.3,-312.59 519.3,-347 519.3,-347 519.3,-347 553.35,-347 553.35,-347"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="553.35,-349.1 559.35,-347 553.35,-344.9 553.35,-349.1"/>
</g>
<!-- src/parse/index.js&#45;&gt;src/options.js -->
<g id="edge22" class="edge">
<title>src/parse/index.js&#45;&gt;src/options.js</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M551.71,-492C482.85,-492 311.72,-492 311.72,-492 311.72,-492 311.72,-501.32 311.72,-501.32"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="309.62,-501.32 311.72,-507.32 313.82,-501.32 309.62,-501.32"/>
</g>
<!-- src/parse/scxml/index.js -->
<g id="node16" class="node">
<title>src/parse/scxml/index.js</title>
<g id="a_node16"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/develop/src/parse/scxml/index.js" xlink:title="src/parse/scxml/&lt;BR/&gt;&lt;B&gt;index.js&lt;/B&gt;">
<path fill="#ffccff" stroke="black" d="M692.11,-475.87C692.11,-475.87 627.44,-475.87 627.44,-475.87 623.11,-475.87 618.78,-471.54 618.78,-467.2 618.78,-467.2 618.78,-458.54 618.78,-458.54 618.78,-454.2 623.11,-449.87 627.44,-449.87 627.44,-449.87 692.11,-449.87 692.11,-449.87 696.44,-449.87 700.78,-454.2 700.78,-458.54 700.78,-458.54 700.78,-467.2 700.78,-467.2 700.78,-471.54 696.44,-475.87 692.11,-475.87"/>
<text text-anchor="start" x="626.78" y="-465.67" font-family="Helvetica,sans-Serif" font-size="9.00">src/parse/scxml/</text>
<text text-anchor="start" x="642.78" y="-456.67" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="9.00">index.js</text>
</a>
</g>
</g>
<!-- src/parse/index.js&#45;&gt;src/parse/scxml/index.js -->
<g id="edge23" class="edge">
<title>src/parse/index.js&#45;&gt;src/parse/scxml/index.js</title>
<path fill="none" stroke="#ff00ff" stroke-width="2" stroke-opacity="0.466667" d="M583.68,-482.53C583.68,-471.65 583.68,-458 583.68,-458 583.68,-458 612.61,-458 612.61,-458"/>
<polygon fill="#ff00ff" fill-opacity="0.466667" stroke="#ff00ff" stroke-width="2" stroke-opacity="0.466667" points="612.61,-460.1 618.61,-458 612.61,-455.9 612.61,-460.1"/>
</g>
<!-- src/parse/smcat&#45;ast.schema.json -->
<g id="node17" class="node">
<title>src/parse/smcat&#45;ast.schema.json</title>
<g id="a_node17"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/develop/src/parse/smcat-ast.schema.json" xlink:title="src/parse/&lt;BR/&gt;&lt;B&gt;smcat&#45;ast.schema.json&lt;/B&gt;">
<path fill="#ffccff" stroke="black" d="M675.12,-579.17C675.12,-580.95 648.9,-582.4 616.62,-582.4 584.34,-582.4 558.12,-580.95 558.12,-579.17 558.12,-579.17 558.12,-550.12 558.12,-550.12 558.12,-548.34 584.34,-546.9 616.62,-546.9 648.9,-546.9 675.12,-548.34 675.12,-550.12 675.12,-550.12 675.12,-579.17 675.12,-579.17"/>
<path fill="none" stroke="black" d="M675.12,-579.17C675.12,-577.39 648.9,-575.94 616.62,-575.94 584.34,-575.94 558.12,-577.39 558.12,-579.17"/>
<text text-anchor="start" x="596.62" y="-567.45" font-family="Helvetica,sans-Serif" font-size="9.00">src/parse/</text>
<text text-anchor="start" x="566.12" y="-558.45" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="9.00">smcat&#45;ast.schema.json</text>
</a>
</g>
</g>
<!-- src/parse/index.js&#45;&gt;src/parse/smcat&#45;ast.schema.json -->
<g id="edge24" class="edge">
<title>src/parse/index.js&#45;&gt;src/parse/smcat&#45;ast.schema.json</title>
<path fill="none" stroke="#ff00ff" stroke-width="2" stroke-opacity="0.466667" d="M583.01,-509.01C583.01,-509.01 583.01,-540.96 583.01,-540.96"/>
<polygon fill="#ff00ff" fill-opacity="0.466667" stroke="#ff00ff" stroke-width="2" stroke-opacity="0.466667" points="580.91,-540.96 583.01,-546.96 585.11,-540.96 580.91,-540.96"/>
</g>
<!-- src/parse/smcat/smcat&#45;parser.js -->
<g id="node18" class="node">
<title>src/parse/smcat/smcat&#45;parser.js</title>
<g id="a_node18"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/develop/src/parse/smcat/smcat-parser.js" xlink:title="src/parse/smcat/&lt;BR/&gt;&lt;B&gt;smcat&#45;parser.js&lt;/B&gt;">
<polygon fill="#ffccff" stroke="black" points="624.78,-630.21 540.78,-630.21 540.78,-604.21 624.78,-604.21 624.78,-630.21"/>
<text text-anchor="start" x="549.28" y="-620.01" font-family="Helvetica,sans-Serif" font-size="9.00">src/parse/smcat/</text>
<text text-anchor="start" x="548.78" y="-611.01" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="9.00">smcat&#45;parser.js</text>
</a>
</g>
</g>
<!-- src/parse/index.js&#45;&gt;src/parse/smcat/smcat&#45;parser.js -->
<g id="edge25" class="edge">
<title>src/parse/index.js&#45;&gt;src/parse/smcat/smcat&#45;parser.js</title>
<path fill="none" stroke="#ff00ff" stroke-width="2" stroke-opacity="0.466667" d="M551.88,-502C544.35,-502 538.24,-502 538.24,-502 538.24,-502 538.24,-617 538.24,-617 538.24,-617 538.48,-617 538.48,-617"/>
<polygon fill="#ff00ff" fill-opacity="0.466667" stroke="#ff00ff" stroke-width="2" stroke-opacity="0.466667" points="534.64,-619.1 540.64,-617 534.64,-614.9 534.64,-619.1"/>
</g>
<!-- src/render/dot/index.js -->
<g id="node27" class="node">
<title>src/render/dot/index.js</title>
<g id="a_node27"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/develop/src/render/dot/index.js" xlink:title="src/render/dot/&lt;BR/&gt;&lt;B&gt;index.js&lt;/B&gt;">
<path fill="#ccccff" stroke="black" d="M251.34,-553.1C251.34,-553.1 193.67,-553.1 193.67,-553.1 189.34,-553.1 185,-548.76 185,-544.43 185,-544.43 185,-535.76 185,-535.76 185,-531.43 189.34,-527.1 193.67,-527.1 193.67,-527.1 251.34,-527.1 251.34,-527.1 255.67,-527.1 260,-531.43 260,-535.76 260,-535.76 260,-544.43 260,-544.43 260,-548.76 255.67,-553.1 251.34,-553.1"/>
<text text-anchor="start" x="193" y="-542.9" font-family="Helvetica,sans-Serif" font-size="9.00">src/render/dot/</text>
<text text-anchor="start" x="205.5" y="-533.9" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="9.00">index.js</text>
</a>
</g>
</g>
<!-- src/render/index&#45;node.js&#45;&gt;src/render/dot/index.js -->
<g id="edge42" class="edge">
<title>src/render/index&#45;node.js&#45;&gt;src/render/dot/index.js</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M530.62,-223.97C530.62,-259.71 530.62,-356 530.62,-356 530.62,-356 230.73,-356 230.73,-356 230.73,-356 230.73,-520.86 230.73,-520.86"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="228.63,-520.86 230.73,-526.86 232.83,-520.86 228.63,-520.86"/>
</g>
<!-- src/render/scjson/index.js -->
<g id="node31" class="node">
<title>src/render/scjson/index.js</title>
<g id="a_node31"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/develop/src/render/scjson/index.js" xlink:title="src/render/scjson/&lt;BR/&gt;&lt;B&gt;index.js&lt;/B&gt;">
<path fill="#ccccff" stroke="black" d="M496.18,-110.18C496.18,-110.18 424.51,-110.18 424.51,-110.18 420.18,-110.18 415.85,-105.85 415.85,-101.51 415.85,-101.51 415.85,-92.85 415.85,-92.85 415.85,-88.51 420.18,-84.18 424.51,-84.18 424.51,-84.18 496.18,-84.18 496.18,-84.18 500.51,-84.18 504.85,-88.51 504.85,-92.85 504.85,-92.85 504.85,-101.51 504.85,-101.51 504.85,-105.85 500.51,-110.18 496.18,-110.18"/>
<text text-anchor="start" x="423.85" y="-99.98" font-family="Helvetica,sans-Serif" font-size="9.00">src/render/scjson/</text>
<text text-anchor="start" x="443.35" y="-90.98" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="9.00">index.js</text>
</a>
</g>
</g>
<!-- src/render/index&#45;node.js&#45;&gt;src/render/scjson/index.js -->
<g id="edge43" class="edge">
<title>src/render/index&#45;node.js&#45;&gt;src/render/scjson/index.js</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M483.88,-197.8C483.88,-197.8 483.88,-116.41 483.88,-116.41"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="485.98,-116.41 483.88,-110.41 481.78,-116.41 485.98,-116.41"/>
</g>
<!-- src/render/scxml/index.js -->
<g id="node32" class="node">
<title>src/render/scxml/index.js</title>
<g id="a_node32"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/develop/src/render/scxml/index.js" xlink:title="src/render/scxml/&lt;BR/&gt;&lt;B&gt;index.js&lt;/B&gt;">
<path fill="#ccccff" stroke="black" d="M620.88,-189.81C620.88,-189.81 552.22,-189.81 552.22,-189.81 547.88,-189.81 543.55,-185.47 543.55,-181.14 543.55,-181.14 543.55,-172.47 543.55,-172.47 543.55,-168.14 547.88,-163.81 552.22,-163.81 552.22,-163.81 620.88,-163.81 620.88,-163.81 625.22,-163.81 629.55,-168.14 629.55,-172.47 629.55,-172.47 629.55,-181.14 629.55,-181.14 629.55,-185.47 625.22,-189.81 620.88,-189.81"/>
<text text-anchor="start" x="551.55" y="-179.61" font-family="Helvetica,sans-Serif" font-size="9.00">src/render/scxml/</text>
<text text-anchor="start" x="569.55" y="-170.61" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="9.00">index.js</text>
</a>
</g>
</g>
<!-- src/render/index&#45;node.js&#45;&gt;src/render/scxml/index.js -->
<g id="edge44" class="edge">
<title>src/render/index&#45;node.js&#45;&gt;src/render/scxml/index.js</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M547.8,-206C552.49,-206 555.68,-206 555.68,-206 555.68,-206 555.68,-196.04 555.68,-196.04"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="557.78,-196.04 555.68,-190.04 553.58,-196.04 557.78,-196.04"/>
</g>
<!-- src/render/smcat/index.js -->
<g id="node33" class="node">
<title>src/render/smcat/index.js</title>
<g id="a_node33"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/develop/src/render/smcat/index.js" xlink:title="src/render/smcat/&lt;BR/&gt;&lt;B&gt;index.js&lt;/B&gt;">
<path fill="#ccccff" stroke="black" d="M682.35,-286.68C682.35,-286.68 613.68,-286.68 613.68,-286.68 609.35,-286.68 605.01,-282.35 605.01,-278.01 605.01,-278.01 605.01,-269.35 605.01,-269.35 605.01,-265.01 609.35,-260.68 613.68,-260.68 613.68,-260.68 682.35,-260.68 682.35,-260.68 686.68,-260.68 691.01,-265.01 691.01,-269.35 691.01,-269.35 691.01,-278.01 691.01,-278.01 691.01,-282.35 686.68,-286.68 682.35,-286.68"/>
<text text-anchor="start" x="613.01" y="-276.48" font-family="Helvetica,sans-Serif" font-size="9.00">src/render/smcat/</text>
<text text-anchor="start" x="631.01" y="-267.48" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="9.00">index.js</text>
</a>
</g>
</g>
<!-- src/render/index&#45;node.js&#45;&gt;src/render/smcat/index.js -->
<g id="edge45" class="edge">
<title>src/render/index&#45;node.js&#45;&gt;src/render/smcat/index.js</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M547.48,-215C578.35,-215 617.28,-215 617.28,-215 617.28,-215 617.28,-254.66 617.28,-254.66"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="615.18,-254.66 617.28,-260.66 619.38,-254.66 615.18,-254.66"/>
</g>
<!-- src/render/vector/vector&#45;native&#45;dot&#45;with&#45;fallback.js -->
<g id="node34" class="node">
<title>src/render/vector/vector&#45;native&#45;dot&#45;with&#45;fallback.js</title>
<g id="a_node34"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/develop/src/render/vector/vector-native-dot-with-fallback.js" xlink:title="src/render/vector/&lt;BR/&gt;&lt;B&gt;vector&#45;native&#45;dot&#45;with&#45;fallback.js&lt;/B&gt;">
<path fill="#ccccff" stroke="black" d="M244.92,-324.51C244.92,-324.51 105.25,-324.51 105.25,-324.51 100.92,-324.51 96.59,-320.18 96.59,-315.84 96.59,-315.84 96.59,-307.18 96.59,-307.18 96.59,-302.84 100.92,-298.51 105.25,-298.51 105.25,-298.51 244.92,-298.51 244.92,-298.51 249.25,-298.51 253.59,-302.84 253.59,-307.18 253.59,-307.18 253.59,-315.84 253.59,-315.84 253.59,-320.18 249.25,-324.51 244.92,-324.51"/>
<text text-anchor="start" x="139.59" y="-314.31" font-family="Helvetica,sans-Serif" font-size="9.00">src/render/vector/</text>
<text text-anchor="start" x="104.59" y="-305.31" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="9.00">vector&#45;native&#45;dot&#45;with&#45;fallback.js</text>
</a>
</g>
</g>
<!-- src/render/index&#45;node.js&#45;&gt;src/render/vector/vector&#45;native&#45;dot&#45;with&#45;fallback.js -->
<g id="edge46" class="edge">
<title>src/render/index&#45;node.js&#45;&gt;src/render/vector/vector&#45;native&#45;dot&#45;with&#45;fallback.js</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M528.08,-223.93C528.08,-249.8 528.08,-305 528.08,-305 528.08,-305 259.87,-305 259.87,-305"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="259.87,-302.9 253.87,-305 259.87,-307.1 259.87,-302.9"/>
</g>
<!-- src/render/vector/vector&#45;with&#45;viz&#45;js.js -->
<g id="node35" class="node">
<title>src/render/vector/vector&#45;with&#45;viz&#45;js.js</title>
<g id="a_node35"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/develop/src/render/vector/vector-with-viz-js.js" xlink:title="src/render/vector/&lt;BR/&gt;&lt;B&gt;vector&#45;with&#45;viz&#45;js.js&lt;/B&gt;">
<path fill="#ccccff" stroke="black" d="M247.32,-265.72C247.32,-265.72 164.65,-265.72 164.65,-265.72 160.32,-265.72 155.99,-261.39 155.99,-257.05 155.99,-257.05 155.99,-248.39 155.99,-248.39 155.99,-244.05 160.32,-239.72 164.65,-239.72 164.65,-239.72 247.32,-239.72 247.32,-239.72 251.65,-239.72 255.99,-244.05 255.99,-248.39 255.99,-248.39 255.99,-257.05 255.99,-257.05 255.99,-261.39 251.65,-265.72 247.32,-265.72"/>
<text text-anchor="start" x="170.49" y="-255.52" font-family="Helvetica,sans-Serif" font-size="9.00">src/render/vector/</text>
<text text-anchor="start" x="163.99" y="-246.52" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="9.00">vector&#45;with&#45;viz&#45;js.js</text>
</a>
</g>
</g>
<!-- src/render/index&#45;node.js&#45;&gt;src/render/vector/vector&#45;with&#45;viz&#45;js.js -->
<g id="edge47" class="edge">
<title>src/render/index&#45;node.js&#45;&gt;src/render/vector/vector&#45;with&#45;viz&#45;js.js</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M473.27,-213C406.8,-213 274.4,-213 274.4,-213 274.4,-213 274.4,-244 274.4,-244 274.4,-244 262.06,-244 262.06,-244"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="262.06,-241.9 256.06,-244 262.06,-246.1 262.06,-241.9"/>
</g>
<!-- src/state&#45;machine&#45;model.js -->
<g id="node20" class="node">
<title>src/state&#45;machine&#45;model.js</title>
<g id="a_node20"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/develop/src/state-machine-model.js" xlink:title="src/&lt;BR/&gt;&lt;B&gt;state&#45;machine&#45;model.js&lt;/B&gt;">
<path fill="#ffffcc" stroke="black" d="M485.78,-692.74C485.78,-692.74 386.11,-692.74 386.11,-692.74 381.78,-692.74 377.44,-688.41 377.44,-684.07 377.44,-684.07 377.44,-675.41 377.44,-675.41 377.44,-671.07 381.78,-666.74 386.11,-666.74 386.11,-666.74 485.78,-666.74 485.78,-666.74 490.11,-666.74 494.44,-671.07 494.44,-675.41 494.44,-675.41 494.44,-684.07 494.44,-684.07 494.44,-688.41 490.11,-692.74 485.78,-692.74"/>
<text text-anchor="start" x="428.44" y="-682.54" font-family="Helvetica,sans-Serif" font-size="9.00">src/</text>
<text text-anchor="start" x="385.44" y="-673.54" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="9.00">state&#45;machine&#45;model.js</text>
</a>
</g>
</g>
<!-- src/transform/desugar.js&#45;&gt;src/state&#45;machine&#45;model.js -->
<g id="edge65" class="edge">
<title>src/transform/desugar.js&#45;&gt;src/state&#45;machine&#45;model.js</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M559.45,-360C513.26,-360 438.43,-360 438.43,-360 438.43,-360 438.43,-660.41 438.43,-660.41"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="436.33,-660.41 438.43,-666.41 440.53,-660.41 436.33,-660.41"/>
</g>
<!-- src/transform/utl.js -->
<g id="node21" class="node">
<title>src/transform/utl.js</title>
<g id="a_node21"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/develop/src/transform/utl.js" xlink:title="src/transform/&lt;BR/&gt;&lt;B&gt;utl.js&lt;/B&gt;">
<path fill="#ffffcc" stroke="black" d="M700.87,-359.76C700.87,-359.76 647.2,-359.76 647.2,-359.76 642.87,-359.76 638.54,-355.42 638.54,-351.09 638.54,-351.09 638.54,-342.42 638.54,-342.42 638.54,-338.09 642.87,-333.76 647.2,-333.76 647.2,-333.76 700.87,-333.76 700.87,-333.76 705.2,-333.76 709.54,-338.09 709.54,-342.42 709.54,-342.42 709.54,-351.09 709.54,-351.09 709.54,-355.42 705.2,-359.76 700.87,-359.76"/>
<text text-anchor="start" x="646.54" y="-349.56" font-family="Helvetica,sans-Serif" font-size="9.00">src/transform/</text>
<text text-anchor="start" x="663.54" y="-340.56" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="9.00">utl.js</text>
</a>
</g>
</g>
<!-- src/transform/desugar.js&#45;&gt;src/transform/utl.js -->
<g id="edge66" class="edge">
<title>src/transform/desugar.js&#45;&gt;src/transform/utl.js</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M630.8,-351C630.8,-351 632.18,-351 632.18,-351"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="632.18,-353.1 638.18,-351 632.18,-348.9 632.18,-353.1"/>
</g>
<!-- src/index.js -->
<g id="node14" class="node">
<title>src/index.js</title>
<g id="a_node14"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/develop/src/index.js" xlink:title="src/&lt;BR/&gt;&lt;B&gt;index.js&lt;/B&gt;">
<path fill="#ffffcc" stroke="black" d="M506.94,-601.12C506.94,-601.12 470.27,-601.12 470.27,-601.12 465.94,-601.12 461.6,-596.79 461.6,-592.46 461.6,-592.46 461.6,-583.79 461.6,-583.79 461.6,-579.46 465.94,-575.12 470.27,-575.12 470.27,-575.12 506.94,-575.12 506.94,-575.12 511.27,-575.12 515.6,-579.46 515.6,-583.79 515.6,-583.79 515.6,-592.46 515.6,-592.46 515.6,-596.79 511.27,-601.12 506.94,-601.12"/>
<text text-anchor="start" x="481.1" y="-590.92" font-family="Helvetica,sans-Serif" font-size="9.00">src/</text>
<text text-anchor="start" x="471.6" y="-581.92" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="9.00">index.js</text>
</a>
</g>
</g>
<!-- src/index.js&#45;&gt;package.json -->
<g id="edge17" class="edge">
<title>src/index.js&#45;&gt;package.json</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M461.4,-589C406.34,-589 286.9,-589 286.9,-589 286.9,-589 286.9,-218 286.9,-218 286.9,-218 271.93,-218 271.93,-218"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="271.93,-215.9 265.93,-218 271.93,-220.1 271.93,-215.9"/>
</g>
<!-- src/index.js&#45;&gt;src/options.js -->
<g id="edge18" class="edge">
<title>src/index.js&#45;&gt;src/options.js</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M466.19,-574.95C466.19,-556.71 466.19,-526 466.19,-526 466.19,-526 355.35,-526 355.35,-526"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="355.35,-523.9 349.35,-526 355.35,-528.1 355.35,-523.9"/>
</g>
<!-- src/index.js&#45;&gt;src/parse/index.js -->
<g id="edge19" class="edge">
<title>src/index.js&#45;&gt;src/parse/index.js</title>
<path fill="none" stroke="#ff00ff" stroke-width="2" stroke-opacity="0.466667" d="M506.64,-575.07C506.64,-549.87 506.64,-497 506.64,-497 506.64,-497 545.79,-497 545.79,-497"/>
<polygon fill="#ff00ff" fill-opacity="0.466667" stroke="#ff00ff" stroke-width="2" stroke-opacity="0.466667" points="545.79,-499.1 551.79,-497 545.79,-494.9 545.79,-499.1"/>
</g>
<!-- src/index.js&#45;&gt;src/transform/desugar.js -->
<g id="edge21" class="edge">
<title>src/index.js&#45;&gt;src/transform/desugar.js</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M497.67,-575.05C497.67,-527 497.67,-363 497.67,-363 497.67,-363 553.29,-363 553.29,-363"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="553.29,-365.1 559.29,-363 553.29,-360.9 553.29,-365.1"/>
</g>
<!-- src/render/index.js -->
<g id="node15" class="node">
<title>src/render/index.js</title>
<g id="a_node15"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/develop/src/render/index.js" xlink:title="src/render/&lt;BR/&gt;&lt;B&gt;index.js&lt;/B&gt;">
<path fill="#ccccff" stroke="black" d="M553.83,-666.37C553.83,-666.37 511.17,-666.37 511.17,-666.37 506.83,-666.37 502.5,-662.04 502.5,-657.7 502.5,-657.7 502.5,-649.04 502.5,-649.04 502.5,-644.7 506.83,-640.37 511.17,-640.37 511.17,-640.37 553.83,-640.37 553.83,-640.37 558.17,-640.37 562.5,-644.7 562.5,-649.04 562.5,-649.04 562.5,-657.7 562.5,-657.7 562.5,-662.04 558.17,-666.37 553.83,-666.37"/>
<text text-anchor="start" x="510.5" y="-656.17" font-family="Helvetica,sans-Serif" font-size="9.00">src/render/</text>
<text text-anchor="start" x="515.5" y="-647.17" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="9.00">index.js</text>
</a>
</g>
</g>
<!-- src/index.js&#45;&gt;src/render/index.js -->
<g id="edge20" class="edge">
<title>src/index.js&#45;&gt;src/render/index.js</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M511.24,-601.33C511.24,-601.33 511.24,-634.19 511.24,-634.19"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="509.14,-634.19 511.24,-640.19 513.34,-634.19 509.14,-634.19"/>
</g>
<!-- src/render/index.js&#45;&gt;src/render/dot/index.js -->
<g id="edge48" class="edge">
<title>src/render/index.js&#45;&gt;src/render/dot/index.js</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M506.87,-640.02C506.87,-637.17 506.87,-635 506.87,-635 506.87,-635 253.36,-635 253.36,-635 253.36,-635 253.36,-559.29 253.36,-559.29"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="255.46,-559.29 253.36,-553.29 251.26,-559.29 255.46,-559.29"/>
</g>
<!-- src/render/index.js&#45;&gt;src/render/scjson/index.js -->
<g id="edge49" class="edge">
<title>src/render/index.js&#45;&gt;src/render/scjson/index.js</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M525.54,-640.18C525.54,-571.41 525.54,-257 525.54,-257 525.54,-257 467.3,-257 467.3,-257 467.3,-257 467.3,-116.26 467.3,-116.26"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="469.4,-116.26 467.3,-110.26 465.2,-116.26 469.4,-116.26"/>
</g>
<!-- src/render/index.js&#45;&gt;src/render/scxml/index.js -->
<g id="edge50" class="edge">
<title>src/render/index.js&#45;&gt;src/render/scxml/index.js</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M535.7,-640.27C535.7,-597.84 535.7,-467 535.7,-467 535.7,-467 557.58,-467 557.58,-467 557.58,-467 557.58,-196.03 557.58,-196.03"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="559.68,-196.03 557.58,-190.03 555.48,-196.03 559.68,-196.03"/>
</g>
<!-- src/render/index.js&#45;&gt;src/render/smcat/index.js -->
<g id="edge51" class="edge">
<title>src/render/index.js&#45;&gt;src/render/smcat/index.js</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M533.16,-640.28C533.16,-573.39 533.16,-273 533.16,-273 533.16,-273 598.92,-273 598.92,-273"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="598.92,-275.1 604.92,-273 598.92,-270.9 598.92,-275.1"/>
</g>
<!-- src/render/index.js&#45;&gt;src/render/vector/vector&#45;with&#45;viz&#45;js.js -->
<g id="edge52" class="edge">
<title>src/render/index.js&#45;&gt;src/render/vector/vector&#45;with&#45;viz&#45;js.js</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M502.41,-654C433.94,-654 272.39,-654 272.39,-654 272.39,-654 272.39,-254 272.39,-254 272.39,-254 262.32,-254 262.32,-254"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="262.32,-251.9 256.32,-254 262.32,-256.1 262.32,-251.9"/>
</g>
<!-- src/parse/parser&#45;helpers.js -->
<g id="node19" class="node">
<title>src/parse/parser&#45;helpers.js</title>
<g id="a_node19"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/develop/src/parse/parser-helpers.js" xlink:title="src/parse/&lt;BR/&gt;&lt;B&gt;parser&#45;helpers.js&lt;/B&gt;">
<path fill="#ffccff" stroke="black" d="M790.19,-442.89C790.19,-442.89 717.52,-442.89 717.52,-442.89 713.19,-442.89 708.85,-438.56 708.85,-434.23 708.85,-434.23 708.85,-425.56 708.85,-425.56 708.85,-421.23 713.19,-416.89 717.52,-416.89 717.52,-416.89 790.19,-416.89 790.19,-416.89 794.52,-416.89 798.85,-421.23 798.85,-425.56 798.85,-425.56 798.85,-434.23 798.85,-434.23 798.85,-438.56 794.52,-442.89 790.19,-442.89"/>
<text text-anchor="start" x="733.85" y="-432.69" font-family="Helvetica,sans-Serif" font-size="9.00">src/parse/</text>
<text text-anchor="start" x="716.85" y="-423.69" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="9.00">parser&#45;helpers.js</text>
</a>
</g>
</g>
<!-- src/parse/scxml/index.js&#45;&gt;src/parse/parser&#45;helpers.js -->
<g id="edge28" class="edge">
<title>src/parse/scxml/index.js&#45;&gt;src/parse/parser&#45;helpers.js</title>
<path fill="none" stroke="#ff00ff" stroke-width="2" stroke-opacity="0.466667" d="M680.03,-449.85C680.03,-443.83 680.03,-438 680.03,-438 680.03,-438 702.78,-438 702.78,-438"/>
<polygon fill="#ff00ff" fill-opacity="0.466667" stroke="#ff00ff" stroke-width="2" stroke-opacity="0.466667" points="702.78,-440.1 708.78,-438 702.78,-435.9 702.78,-440.1"/>
</g>
<!-- src/parse/scxml/index.js&#45;&gt;src/transform/utl.js -->
<g id="edge27" class="edge">
<title>src/parse/scxml/index.js&#45;&gt;src/transform/utl.js</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M659.28,-449.55C659.28,-449.55 659.28,-365.92 659.28,-365.92"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="661.38,-365.92 659.28,-359.92 657.18,-365.92 661.38,-365.92"/>
</g>
<!-- src/parse/scxml/normalize&#45;machine.js -->
<g id="node22" class="node">
<title>src/parse/scxml/normalize&#45;machine.js</title>
<g id="a_node22"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/develop/src/parse/scxml/normalize-machine.js" xlink:title="src/parse/scxml/&lt;BR/&gt;&lt;B&gt;normalize&#45;machine.js&lt;/B&gt;">
<path fill="#ffccff" stroke="black" d="M769.3,-538.74C769.3,-538.74 678.63,-538.74 678.63,-538.74 674.3,-538.74 669.97,-534.41 669.97,-530.07 669.97,-530.07 669.97,-521.41 669.97,-521.41 669.97,-517.07 674.3,-512.74 678.63,-512.74 678.63,-512.74 769.3,-512.74 769.3,-512.74 773.63,-512.74 777.97,-517.07 777.97,-521.41 777.97,-521.41 777.97,-530.07 777.97,-530.07 777.97,-534.41 773.63,-538.74 769.3,-538.74"/>
<text text-anchor="start" x="690.97" y="-528.54" font-family="Helvetica,sans-Serif" font-size="9.00">src/parse/scxml/</text>
<text text-anchor="start" x="677.97" y="-519.54" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="9.00">normalize&#45;machine.js</text>
</a>
</g>
</g>
<!-- src/parse/scxml/index.js&#45;&gt;src/parse/scxml/normalize&#45;machine.js -->
<g id="edge29" class="edge">
<title>src/parse/scxml/index.js&#45;&gt;src/parse/scxml/normalize&#45;machine.js</title>
<path fill="none" stroke="#ff00ff" stroke-width="2" stroke-opacity="0.466667" d="M685.37,-475.9C685.37,-475.9 685.37,-506.73 685.37,-506.73"/>
<polygon fill="#ff00ff" fill-opacity="0.466667" stroke="#ff00ff" stroke-width="2" stroke-opacity="0.466667" points="683.27,-506.73 685.37,-512.73 687.47,-506.73 683.27,-506.73"/>
</g>
<!-- src/parse/smcat/smcat&#45;parser.js&#45;&gt;src/parse/parser&#45;helpers.js -->
<g id="edge30" class="edge">
<title>src/parse/smcat/smcat&#45;parser.js&#45;&gt;src/parse/parser&#45;helpers.js</title>
<path fill="none" stroke="#ff00ff" stroke-width="2" stroke-opacity="0.466667" d="M624.89,-617C685.05,-617 788.41,-617 788.41,-617 788.41,-617 788.41,-449.05 788.41,-449.05"/>
<polygon fill="#ff00ff" fill-opacity="0.466667" stroke="#ff00ff" stroke-width="2" stroke-opacity="0.466667" points="790.51,-449.05 788.41,-443.05 786.31,-449.05 790.51,-449.05"/>
</g>
<!-- src/parse/parser&#45;helpers.js&#45;&gt;src/state&#45;machine&#45;model.js -->
<g id="edge26" class="edge">
<title>src/parse/parser&#45;helpers.js&#45;&gt;src/state&#45;machine&#45;model.js</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M708.62,-433C624.82,-433 453.88,-433 453.88,-433 453.88,-433 453.88,-660.47 453.88,-660.47"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="451.78,-660.47 453.88,-666.47 455.98,-660.47 451.78,-660.47"/>
</g>
<!-- src/render/dot/attributebuilder.js -->
<g id="node23" class="node">
<title>src/render/dot/attributebuilder.js</title>
<g id="a_node23"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/develop/src/render/dot/attributebuilder.js" xlink:title="src/render/dot/&lt;BR/&gt;&lt;B&gt;attributebuilder.js&lt;/B&gt;">
<path fill="#ccccff" stroke="black" d="M360.74,-693.21C360.74,-693.21 287.07,-693.21 287.07,-693.21 282.74,-693.21 278.41,-688.88 278.41,-684.54 278.41,-684.54 278.41,-675.88 278.41,-675.88 278.41,-671.54 282.74,-667.21 287.07,-667.21 287.07,-667.21 360.74,-667.21 360.74,-667.21 365.07,-667.21 369.41,-671.54 369.41,-675.88 369.41,-675.88 369.41,-684.54 369.41,-684.54 369.41,-688.88 365.07,-693.21 360.74,-693.21"/>
<text text-anchor="start" x="294.41" y="-683.01" font-family="Helvetica,sans-Serif" font-size="9.00">src/render/dot/</text>
<text text-anchor="start" x="286.41" y="-674.01" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="9.00">attributebuilder.js</text>
</a>
</g>
</g>
<!-- src/render/dot/counter.js -->
<g id="node24" class="node">
<title>src/render/dot/counter.js</title>
<g id="a_node24"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/develop/src/render/dot/counter.js" xlink:title="src/render/dot/&lt;BR/&gt;&lt;B&gt;counter.js&lt;/B&gt;">
<path fill="#ccccff" stroke="black" d="M261.72,-668.92C261.72,-668.92 204.06,-668.92 204.06,-668.92 199.72,-668.92 195.39,-664.59 195.39,-660.26 195.39,-660.26 195.39,-651.59 195.39,-651.59 195.39,-647.26 199.72,-642.92 204.06,-642.92 204.06,-642.92 261.72,-642.92 261.72,-642.92 266.06,-642.92 270.39,-647.26 270.39,-651.59 270.39,-651.59 270.39,-660.26 270.39,-660.26 270.39,-664.59 266.06,-668.92 261.72,-668.92"/>
<text text-anchor="start" x="203.39" y="-658.72" font-family="Helvetica,sans-Serif" font-size="9.00">src/render/dot/</text>
<text text-anchor="start" x="211.39" y="-649.72" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="9.00">counter.js</text>
</a>
</g>
</g>
<!-- src/render/dot/dot.states.template.js -->
<g id="node25" class="node">
<title>src/render/dot/dot.states.template.js</title>
<g id="a_node25"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/develop/src/render/dot/dot.states.template.js" xlink:title="src/render/dot/&lt;BR/&gt;&lt;B&gt;dot.states.template.js&lt;/B&gt;">
<polygon fill="#ccccff" stroke="black" points="240.07,-631.56 131.07,-631.56 131.07,-605.56 240.07,-605.56 240.07,-631.56"/>
<text text-anchor="start" x="156.07" y="-621.36" font-family="Helvetica,sans-Serif" font-size="9.00">src/render/dot/</text>
<text text-anchor="start" x="139.07" y="-612.36" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="9.00">dot.states.template.js</text>
</a>
</g>
</g>
<!-- src/render/dot/dot.template.js -->
<g id="node26" class="node">
<title>src/render/dot/dot.template.js</title>
<g id="a_node26"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/develop/src/render/dot/dot.template.js" xlink:title="src/render/dot/&lt;BR/&gt;&lt;B&gt;dot.template.js&lt;/B&gt;">
<polygon fill="#ccccff" stroke="black" points="176.94,-578.67 96.94,-578.67 96.94,-552.67 176.94,-552.67 176.94,-578.67"/>
<text text-anchor="start" x="107.44" y="-568.47" font-family="Helvetica,sans-Serif" font-size="9.00">src/render/dot/</text>
<text text-anchor="start" x="104.94" y="-559.47" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="9.00">dot.template.js</text>
</a>
</g>
</g>
<!-- src/render/dot/index.js&#45;&gt;src/options.js -->
<g id="edge31" class="edge">
<title>src/render/dot/index.js&#45;&gt;src/options.js</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M260.25,-540C287.73,-540 320.14,-540 320.14,-540 320.14,-540 320.14,-539.39 320.14,-539.39"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="322.24,-539.87 320.14,-533.87 318.04,-539.87 322.24,-539.87"/>
</g>
<!-- src/render/dot/index.js&#45;&gt;src/state&#45;machine&#45;model.js -->
<g id="edge32" class="edge">
<title>src/render/dot/index.js&#45;&gt;src/state&#45;machine&#45;model.js</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M260.13,-542C313.31,-542 404.07,-542 404.07,-542 404.07,-542 404.07,-660.53 404.07,-660.53"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="401.97,-660.53 404.07,-666.53 406.17,-660.53 401.97,-660.53"/>
</g>
<!-- src/render/dot/index.js&#45;&gt;src/render/dot/attributebuilder.js -->
<g id="edge33" class="edge">
<title>src/render/dot/index.js&#45;&gt;src/render/dot/attributebuilder.js</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M260.26,-544C272.34,-544 282.65,-544 282.65,-544 282.65,-544 282.65,-661.15 282.65,-661.15"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="280.55,-661.15 282.65,-667.15 284.75,-661.15 280.55,-661.15"/>
</g>
<!-- src/render/dot/index.js&#45;&gt;src/render/dot/counter.js -->
<g id="edge34" class="edge">
<title>src/render/dot/index.js&#45;&gt;src/render/dot/counter.js</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M246.71,-553.38C246.71,-553.38 246.71,-636.79 246.71,-636.79"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="244.61,-636.79 246.71,-642.79 248.81,-636.79 244.61,-636.79"/>
</g>
<!-- src/render/dot/index.js&#45;&gt;src/render/dot/dot.states.template.js -->
<g id="edge35" class="edge">
<title>src/render/dot/index.js&#45;&gt;src/render/dot/dot.states.template.js</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M212.54,-553.41C212.54,-553.41 212.54,-599.44 212.54,-599.44"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="210.44,-599.44 212.54,-605.44 214.64,-599.44 210.44,-599.44"/>
</g>
<!-- src/render/dot/index.js&#45;&gt;src/render/dot/dot.template.js -->
<g id="edge36" class="edge">
<title>src/render/dot/index.js&#45;&gt;src/render/dot/dot.template.js</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M184.93,-546C175.05,-546 167.09,-546 167.09,-546 167.09,-546 167.09,-546.67 167.09,-546.67"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="164.99,-546.66 167.09,-552.66 169.19,-546.66 164.99,-546.66"/>
</g>
<!-- src/render/dot/state&#45;transformers.js -->
<g id="node28" class="node">
<title>src/render/dot/state&#45;transformers.js</title>
<g id="a_node28"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/develop/src/render/dot/state-transformers.js" xlink:title="src/render/dot/&lt;BR/&gt;&lt;B&gt;state&#45;transformers.js&lt;/B&gt;">
<path fill="#ccccff" stroke="black" d="M148.58,-513.73C148.58,-513.73 57.91,-513.73 57.91,-513.73 53.58,-513.73 49.24,-509.4 49.24,-505.07 49.24,-505.07 49.24,-496.4 49.24,-496.4 49.24,-492.07 53.58,-487.73 57.91,-487.73 57.91,-487.73 148.58,-487.73 148.58,-487.73 152.91,-487.73 157.24,-492.07 157.24,-496.4 157.24,-496.4 157.24,-505.07 157.24,-505.07 157.24,-509.4 152.91,-513.73 148.58,-513.73"/>
<text text-anchor="start" x="73.74" y="-503.53" font-family="Helvetica,sans-Serif" font-size="9.00">src/render/dot/</text>
<text text-anchor="start" x="57.24" y="-494.53" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="9.00">state&#45;transformers.js</text>
</a>
</g>
</g>
<!-- src/render/dot/index.js&#45;&gt;src/render/dot/state&#45;transformers.js -->
<g id="edge37" class="edge">
<title>src/render/dot/index.js&#45;&gt;src/render/dot/state&#45;transformers.js</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M184.79,-533C158.12,-533 127.09,-533 127.09,-533 127.09,-533 127.09,-519.86 127.09,-519.86"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="129.19,-519.86 127.09,-513.86 124.99,-519.86 129.19,-519.86"/>
</g>
<!-- src/render/dot/transition&#45;transformers.js -->
<g id="node29" class="node">
<title>src/render/dot/transition&#45;transformers.js</title>
<g id="a_node29"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/develop/src/render/dot/transition-transformers.js" xlink:title="src/render/dot/&lt;BR/&gt;&lt;B&gt;transition&#45;transformers.js&lt;/B&gt;">
<path fill="#ccccff" stroke="black" d="M136.33,-441.66C136.33,-441.66 26.67,-441.66 26.67,-441.66 22.33,-441.66 18,-437.32 18,-432.99 18,-432.99 18,-424.32 18,-424.32 18,-419.99 22.33,-415.66 26.67,-415.66 26.67,-415.66 136.33,-415.66 136.33,-415.66 140.67,-415.66 145,-419.99 145,-424.32 145,-424.32 145,-432.99 145,-432.99 145,-437.32 140.67,-441.66 136.33,-441.66"/>
<text text-anchor="start" x="52" y="-431.46" font-family="Helvetica,sans-Serif" font-size="9.00">src/render/dot/</text>
<text text-anchor="start" x="26" y="-422.46" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="9.00">transition&#45;transformers.js</text>
</a>
</g>
</g>
<!-- src/render/dot/index.js&#45;&gt;src/render/dot/transition&#45;transformers.js -->
<g id="edge38" class="edge">
<title>src/render/dot/index.js&#45;&gt;src/render/dot/transition&#45;transformers.js</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M196.43,-526.84C196.43,-497.98 196.43,-432 196.43,-432 196.43,-432 151.02,-432 151.02,-432"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="151.02,-429.9 145.02,-432 151.02,-434.1 151.02,-429.9"/>
</g>
<!-- src/render/dot/utl.js -->
<g id="node30" class="node">
<title>src/render/dot/utl.js</title>
<g id="a_node30"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/develop/src/render/dot/utl.js" xlink:title="src/render/dot/&lt;BR/&gt;&lt;B&gt;utl.js&lt;/B&gt;">
<path fill="#ccccff" stroke="black" d="M110.04,-366.21C110.04,-366.21 52.37,-366.21 52.37,-366.21 48.04,-366.21 43.71,-361.88 43.71,-357.55 43.71,-357.55 43.71,-348.88 43.71,-348.88 43.71,-344.55 48.04,-340.21 52.37,-340.21 52.37,-340.21 110.04,-340.21 110.04,-340.21 114.37,-340.21 118.71,-344.55 118.71,-348.88 118.71,-348.88 118.71,-357.55 118.71,-357.55 118.71,-361.88 114.37,-366.21 110.04,-366.21"/>
<text text-anchor="start" x="51.71" y="-356.01" font-family="Helvetica,sans-Serif" font-size="9.00">src/render/dot/</text>
<text text-anchor="start" x="70.71" y="-347.01" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="9.00">utl.js</text>
</a>
</g>
</g>
<!-- src/render/dot/index.js&#45;&gt;src/render/dot/utl.js -->
<g id="edge39" class="edge">
<title>src/render/dot/index.js&#45;&gt;src/render/dot/utl.js</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M207.87,-527.03C207.87,-484.08 207.87,-350 207.87,-350 207.87,-350 124.87,-350 124.87,-350"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="124.87,-347.9 118.87,-350 124.87,-352.1 124.87,-347.9"/>
</g>
<!-- src/render/dot/state&#45;transformers.js&#45;&gt;src/render/dot/utl.js -->
<g id="edge40" class="edge">
<title>src/render/dot/state&#45;transformers.js&#45;&gt;src/render/dot/utl.js</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M151.12,-487.62C151.12,-451.47 151.12,-353 151.12,-353 151.12,-353 125.03,-353 125.03,-353"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="125.03,-350.9 119.03,-353 125.03,-355.1 125.03,-350.9"/>
</g>
<!-- src/render/dot/transition&#45;transformers.js&#45;&gt;src/render/dot/utl.js -->
<g id="edge41" class="edge">
<title>src/render/dot/transition&#45;transformers.js&#45;&gt;src/render/dot/utl.js</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M81.21,-415.51C81.21,-415.51 81.21,-372.46 81.21,-372.46"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="83.31,-372.46 81.21,-366.46 79.11,-372.46 83.31,-372.46"/>
</g>
<!-- src/render/scjson/index.js&#45;&gt;src/state&#45;machine&#45;model.js -->
<g id="edge53" class="edge">
<title>src/render/scjson/index.js&#45;&gt;src/state&#45;machine&#45;model.js</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M441.72,-110.23C441.72,-156.66 441.72,-311 441.72,-311 441.72,-311 479.74,-311 479.74,-311 479.74,-311 479.74,-428 479.74,-428 479.74,-428 446.15,-428 446.15,-428 446.15,-428 446.15,-660.56 446.15,-660.56"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="444.05,-660.56 446.15,-666.56 448.25,-660.56 444.05,-660.56"/>
</g>
<!-- src/render/scjson/make&#45;valid&#45;event&#45;names.js -->
<g id="node36" class="node">
<title>src/render/scjson/make&#45;valid&#45;event&#45;names.js</title>
<g id="a_node36"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/develop/src/render/scjson/make-valid-event-names.js" xlink:title="src/render/scjson/&lt;BR/&gt;&lt;B&gt;make&#45;valid&#45;event&#45;names.js&lt;/B&gt;">
<path fill="#ccccff" stroke="black" d="M472.19,-26C472.19,-26 356.52,-26 356.52,-26 352.19,-26 347.85,-21.67 347.85,-17.33 347.85,-17.33 347.85,-8.67 347.85,-8.67 347.85,-4.33 352.19,0 356.52,0 356.52,0 472.19,0 472.19,0 476.52,0 480.85,-4.33 480.85,-8.67 480.85,-8.67 480.85,-17.33 480.85,-17.33 480.85,-21.67 476.52,-26 472.19,-26"/>
<text text-anchor="start" x="377.85" y="-15.8" font-family="Helvetica,sans-Serif" font-size="9.00">src/render/scjson/</text>
<text text-anchor="start" x="355.85" y="-6.8" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="9.00">make&#45;valid&#45;event&#45;names.js</text>
</a>
</g>
</g>
<!-- src/render/scjson/index.js&#45;&gt;src/render/scjson/make&#45;valid&#45;event&#45;names.js -->
<g id="edge54" class="edge">
<title>src/render/scjson/index.js&#45;&gt;src/render/scjson/make&#45;valid&#45;event&#45;names.js</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M448.35,-84.03C448.35,-84.03 448.35,-32.06 448.35,-32.06"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="450.45,-32.06 448.35,-26.06 446.25,-32.06 450.45,-32.06"/>
</g>
<!-- src/render/scjson/make&#45;valid&#45;xml&#45;name.js -->
<g id="node37" class="node">
<title>src/render/scjson/make&#45;valid&#45;xml&#45;name.js</title>
<g id="a_node37"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/develop/src/render/scjson/make-valid-xml-name.js" xlink:title="src/render/scjson/&lt;BR/&gt;&lt;B&gt;make&#45;valid&#45;xml&#45;name.js&lt;/B&gt;">
<path fill="#ccccff" stroke="black" d="M591.47,-60.04C591.47,-60.04 489.8,-60.04 489.8,-60.04 485.47,-60.04 481.14,-55.71 481.14,-51.37 481.14,-51.37 481.14,-42.71 481.14,-42.71 481.14,-38.37 485.47,-34.04 489.8,-34.04 489.8,-34.04 591.47,-34.04 591.47,-34.04 595.8,-34.04 600.14,-38.37 600.14,-42.71 600.14,-42.71 600.14,-51.37 600.14,-51.37 600.14,-55.71 595.8,-60.04 591.47,-60.04"/>
<text text-anchor="start" x="504.14" y="-49.84" font-family="Helvetica,sans-Serif" font-size="9.00">src/render/scjson/</text>
<text text-anchor="start" x="489.14" y="-40.84" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="9.00">make&#45;valid&#45;xml&#45;name.js</text>
</a>
</g>
</g>
<!-- src/render/scjson/index.js&#45;&gt;src/render/scjson/make&#45;valid&#45;xml&#45;name.js -->
<g id="edge55" class="edge">
<title>src/render/scjson/index.js&#45;&gt;src/render/scjson/make&#45;valid&#45;xml&#45;name.js</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M492.99,-84.01C492.99,-84.01 492.99,-66.3 492.99,-66.3"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="495.09,-66.3 492.99,-60.3 490.89,-66.3 495.09,-66.3"/>
</g>
<!-- src/render/scxml/index.js&#45;&gt;src/render/scjson/index.js -->
<g id="edge56" class="edge">
<title>src/render/scxml/index.js&#45;&gt;src/render/scjson/index.js</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M543.43,-172C519.43,-172 494.37,-172 494.37,-172 494.37,-172 494.37,-116.21 494.37,-116.21"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="496.47,-116.21 494.37,-110.21 492.27,-116.21 496.47,-116.21"/>
</g>
<!-- src/render/scxml/scxml.states.template.js -->
<g id="node38" class="node">
<title>src/render/scxml/scxml.states.template.js</title>
<g id="a_node38"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/develop/src/render/scxml/scxml.states.template.js" xlink:title="src/render/scxml/&lt;BR/&gt;&lt;B&gt;scxml.states.template.js&lt;/B&gt;">
<polygon fill="#ccccff" stroke="black" points="670.8,-106.08 548.8,-106.08 548.8,-80.08 670.8,-80.08 670.8,-106.08"/>
<text text-anchor="start" x="574.8" y="-95.88" font-family="Helvetica,sans-Serif" font-size="9.00">src/render/scxml/</text>
<text text-anchor="start" x="556.8" y="-86.88" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="9.00">scxml.states.template.js</text>
</a>
</g>
</g>
<!-- src/render/scxml/index.js&#45;&gt;src/render/scxml/scxml.states.template.js -->
<g id="edge57" class="edge">
<title>src/render/scxml/index.js&#45;&gt;src/render/scxml/scxml.states.template.js</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M589.18,-163.72C589.18,-163.72 589.18,-112.35 589.18,-112.35"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="591.28,-112.35 589.18,-106.35 587.08,-112.35 591.28,-112.35"/>
</g>
<!-- src/render/scxml/scxml.template.js -->
<g id="node39" class="node">
<title>src/render/scxml/scxml.template.js</title>
<g id="a_node39"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/develop/src/render/scxml/scxml.template.js" xlink:title="src/render/scxml/&lt;BR/&gt;&lt;B&gt;scxml.template.js&lt;/B&gt;">
<polygon fill="#ccccff" stroke="black" points="729.56,-171.45 637.56,-171.45 637.56,-145.45 729.56,-145.45 729.56,-171.45"/>
<text text-anchor="start" x="648.56" y="-161.25" font-family="Helvetica,sans-Serif" font-size="9.00">src/render/scxml/</text>
<text text-anchor="start" x="645.56" y="-152.25" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="9.00">scxml.template.js</text>
</a>
</g>
</g>
<!-- src/render/scxml/index.js&#45;&gt;src/render/scxml/scxml.template.js -->
<g id="edge58" class="edge">
<title>src/render/scxml/index.js&#45;&gt;src/render/scxml/scxml.template.js</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M629.66,-167C629.66,-167 631.29,-167 631.29,-167"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="631.29,-169.1 637.29,-167 631.29,-164.9 631.29,-169.1"/>
</g>
<!-- src/render/smcat/smcat.template.js -->
<g id="node40" class="node">
<title>src/render/smcat/smcat.template.js</title>
<g id="a_node40"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/develop/src/render/smcat/smcat.template.js" xlink:title="src/render/smcat/&lt;BR/&gt;&lt;B&gt;smcat.template.js&lt;/B&gt;">
<polygon fill="#ccccff" stroke="black" points="776.7,-252.65 683.7,-252.65 683.7,-226.65 776.7,-226.65 776.7,-252.65"/>
<text text-anchor="start" x="695.2" y="-242.45" font-family="Helvetica,sans-Serif" font-size="9.00">src/render/smcat/</text>
<text text-anchor="start" x="691.7" y="-233.45" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="9.00">smcat.template.js</text>
</a>
</g>
</g>
<!-- src/render/smcat/index.js&#45;&gt;src/render/smcat/smcat.template.js -->
<g id="edge59" class="edge">
<title>src/render/smcat/index.js&#45;&gt;src/render/smcat/smcat.template.js</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M687.36,-260.62C687.36,-260.62 687.36,-258.84 687.36,-258.84"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="689.46,-258.84 687.36,-252.84 685.26,-258.84 689.46,-258.84"/>
</g>
<!-- src/render/vector/vector&#45;native&#45;dot&#45;with&#45;fallback.js&#45;&gt;src/options.js -->
<g id="edge60" class="edge">
<title>src/render/vector/vector&#45;native&#45;dot&#45;with&#45;fallback.js&#45;&gt;src/options.js</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M242.16,-324.68C242.16,-370.76 242.16,-522 242.16,-522 242.16,-522 285.1,-522 285.1,-522"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="285.1,-524.1 291.1,-522 285.1,-519.9 285.1,-524.1"/>
</g>
<!-- src/render/vector/vector&#45;native&#45;dot&#45;with&#45;fallback.js&#45;&gt;src/render/dot/index.js -->
<g id="edge61" class="edge">
<title>src/render/vector/vector&#45;native&#45;dot&#45;with&#45;fallback.js&#45;&gt;src/render/dot/index.js</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M219.3,-324.79C219.3,-324.79 219.3,-521.07 219.3,-521.07"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="217.2,-521.07 219.3,-527.07 221.4,-521.07 217.2,-521.07"/>
</g>
<!-- src/render/vector/dot&#45;to&#45;vector&#45;native.js -->
<g id="node41" class="node">
<title>src/render/vector/dot&#45;to&#45;vector&#45;native.js</title>
<g id="a_node41"><a xlink:href="https://github.com/sverweij/state-machine-cat/blob/develop/src/render/vector/dot-to-vector-native.js" xlink:title="src/render/vector/&lt;BR/&gt;&lt;B&gt;dot&#45;to&#45;vector&#45;native.js&lt;/B&gt;">
<path fill="#ccccff" stroke="black" d="M139.21,-290.49C139.21,-290.49 45.54,-290.49 45.54,-290.49 41.21,-290.49 36.88,-286.15 36.88,-281.82 36.88,-281.82 36.88,-273.15 36.88,-273.15 36.88,-268.82 41.21,-264.49 45.54,-264.49 45.54,-264.49 139.21,-264.49 139.21,-264.49 143.54,-264.49 147.88,-268.82 147.88,-273.15 147.88,-273.15 147.88,-281.82 147.88,-281.82 147.88,-286.15 143.54,-290.49 139.21,-290.49"/>
<text text-anchor="start" x="56.88" y="-280.29" font-family="Helvetica,sans-Serif" font-size="9.00">src/render/vector/</text>
<text text-anchor="start" x="44.88" y="-271.29" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="9.00">dot&#45;to&#45;vector&#45;native.js</text>
</a>
</g>
</g>
<!-- src/render/vector/vector&#45;native&#45;dot&#45;with&#45;fallback.js&#45;&gt;src/render/vector/dot&#45;to&#45;vector&#45;native.js -->
<g id="edge62" class="edge">
<title>src/render/vector/vector&#45;native&#45;dot&#45;with&#45;fallback.js&#45;&gt;src/render/vector/dot&#45;to&#45;vector&#45;native.js</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M122.23,-298.45C122.23,-298.45 122.23,-296.68 122.23,-296.68"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="124.33,-296.68 122.23,-290.68 120.13,-296.68 124.33,-296.68"/>
</g>
<!-- src/render/vector/vector&#45;with&#45;viz&#45;js.js&#45;&gt;src/options.js -->
<g id="edge63" class="edge">
<title>src/render/vector/vector&#45;with&#45;viz&#45;js.js&#45;&gt;src/options.js</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M256.03,-249C267.5,-249 276.4,-249 276.4,-249 276.4,-249 276.4,-518 276.4,-518 276.4,-518 284.72,-518 284.72,-518"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="284.72,-520.1 290.72,-518 284.72,-515.9 284.72,-520.1"/>
</g>
<!-- src/render/vector/vector&#45;with&#45;viz&#45;js.js&#45;&gt;src/render/dot/index.js -->
<g id="edge64" class="edge">
<title>src/render/vector/vector&#45;with&#45;viz&#45;js.js&#45;&gt;src/render/dot/index.js</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M155.86,-252C94.89,-252 0,-252 0,-252 0,-252 0,-539 0,-539 0,-539 178.76,-539 178.76,-539"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="178.76,-541.1 184.76,-539 178.76,-536.9 178.76,-541.1"/>
</g>
</g>
</svg>
<script>document.body.onmouseover = getHighlightHandler();

function getHighlightHandler() {
  /** @type {string} */
  var currentHighlightedTitle;

  /** @type {NodeListOf<SVGGElement>} */
  var nodes = document.querySelectorAll(".node");
  /** @type {NodeListOf<SVGGElement>} */
  var edges = document.querySelectorAll(".edge");
  var title2ElementMap = new Title2ElementMap(edges, nodes);

  /** @param {MouseEvent} pMouseEvent */
  return function highlightHandler(pMouseEvent) {
    var closestNodeOrEdge = pMouseEvent.target.closest(".edge, .node");
    var closestTitleText = getTitleText(closestNodeOrEdge);

    if (!(currentHighlightedTitle === closestTitleText)) {
      title2ElementMap.get(currentHighlightedTitle).forEach(removeHighlight);
      title2ElementMap.get(closestTitleText).forEach(addHighlight);
      currentHighlightedTitle = closestTitleText;
    }
  };
}

/**
 *
 * @param {SVGGelement[]} pEdges
 * @param {SVGGElement[]} pNodes
 * @return {{get: (pTitleText:string) => SVGGElement[]}}
 */
function Title2ElementMap(pEdges, pNodes) {
  /* {{[key: string]: SVGGElement[]}} */
  var elementMap = buildMap(pEdges, pNodes);

  /**
   * @param {NodeListOf<SVGGElement>} pEdges
   * @param {NodeListOf<SVGGElement>} pNodes
   * @return {{[key: string]: SVGGElement[]}}
   */
  function buildMap(pEdges, pNodes) {
    var title2NodeMap = buildTitle2NodeMap(pNodes);

    return nodeListToArray(pEdges).reduce(addEdgeToMap(title2NodeMap), {});
  }
  /**
   * @param {NodeListOf<SVGGElement>} pNodes
   * @return {{[key: string]: SVGGElement}}
   */
  function buildTitle2NodeMap(pNodes) {
    return nodeListToArray(pNodes).reduce(addNodeToMap, {});
  }

  function addNodeToMap(pMap, pNode) {
    var titleText = getTitleText(pNode);

    if (titleText) {
      pMap[titleText] = pNode;
    }
    return pMap;
  }

  function addEdgeToMap(pNodeMap) {
    return function (pEdgeMap, pEdge) {
      /** @type {string} */
      var titleText = getTitleText(pEdge);

      if (titleText) {
        var edge = pryEdgeFromTitle(titleText);

        pEdgeMap[titleText] = [pNodeMap[edge.from], pNodeMap[edge.to]];
        (pEdgeMap[edge.from] || (pEdgeMap[edge.from] = [])).push(pEdge);
        (pEdgeMap[edge.to] || (pEdgeMap[edge.to] = [])).push(pEdge);
      }
      return pEdgeMap;
    };
  }

  /**
   *
   * @param {string} pString
   * @return {{from?: string; to?:string;}}
   */
  function pryEdgeFromTitle(pString) {
    var nodeNames = pString.split(/\s*->\s*/);

    return {
      from: nodeNames.shift(),
      to: nodeNames.shift(),
    };
  }
  /**
   *
   * @param {string} pTitleText
   * @return {SVGGElement[]}
   */
  function get(pTitleText) {
    return (pTitleText && elementMap[pTitleText]) || [];
  }
  return {
    get: get,
  };
}

/**
 * @param {SVGGElement} pGElement
 * @return {string?}
 */
function getTitleText(pGElement) {
  /** @type {SVGTitleElement} */
  var title = pGElement && pGElement.querySelector("title");
  /** @type {string} */
  var titleText = title && title.textContent;

  if (titleText) {
    titleText = titleText.trim();
  }
  return titleText;
}

/**
 * @param {NodeListOf<Element>} pNodeList
 * @return {Element[]}
 */
function nodeListToArray(pNodeList) {
  var lReturnValue = [];

  pNodeList.forEach(function (pElement) {
    lReturnValue.push(pElement);
  });

  return lReturnValue;
}

/**
 * @param {SVGGElement} pGElement
 */
function removeHighlight(pGElement) {
  if (pGElement && pGElement.classList) {
    pGElement.classList.remove("current");
  }
}

/**
 * @param {SVGGElement} pGroup
 */
function addHighlight(pGroup) {
  if (pGroup && pGroup.classList) {
    pGroup.classList.add("current");
  }
}
</script>  </body>
</html>
